package com.thjk.bdf.common.utils;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;

/**
 * 校验dto参数
 * Bean属性必须全部为String且必传
 *
 */
public class ParamCheckUtil {
	
	private final static Logger logger = LoggerFactory.getLogger(ParamCheckUtil.class);
	
	public static boolean checkStringParam(Object obj) {
		Class<? extends Object> clazz=obj.getClass();//获得实体类名
		Field[] fields = obj.getClass().getDeclaredFields();//获得属性
		try {
			//获得Object对象中的所有方法
			for(Field field:fields){
				PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz);
				Method getMethod = pd.getReadMethod();//获得get方法
				Object param = getMethod.invoke(obj);//此处为执行该Object对象的get方法
				if(param == null) {
					logger.error("参数不能为null!");
					return false;
				}
				if(param instanceof String) {
					if(StringUtils.isEmpty(param)) {
						logger.error("参数不能为空!");
						return false;
					}
				}else {
					logger.error("参数对象属性不是String类型!");
					return false;
				}
			}
		} catch (Exception e) {
			logger.error("checkStringParam has Exception:", e);
			return false;
		}		
		return true;
	}

}
